// 文件名：map_time_series_lookup.cpp
// 目的：在时间序列（以 time_point 为键的 std::map）中，查找“给定时间点及之后”的下一条记录。
// 技术点：
//   - 键类型为 std::chrono::system_clock::time_point，天然可排序；
//   - lower_bound(query) 返回第一个 >= query 的时间点迭代器；
//   - 若指向 end()，说明没有不早于 query 的读数。
// 输出：打印下一条读数相对基准 base 的分钟偏移及其数值。

#include <chrono>
#include <iomanip>
#include <iostream>
#include <map>

int main() {
    using Clock = std::chrono::system_clock;
    std::map<Clock::time_point, double> timeline;

    auto base = Clock::now();
    for (int i = 0; i < 6; ++i) {
        timeline.emplace(base + std::chrono::minutes(i * 5), 25.0 + i);
    }

    auto query = base + std::chrono::minutes(17);
    auto it = timeline.lower_bound(query);

    if (it == timeline.end()) {
        std::cout << "No reading >= query time\n";
    } else {
        auto delta = std::chrono::duration_cast<std::chrono::minutes>(it->first - base).count();
        std::cout << "Next reading at +" << delta << " min -> " << it->second << '\n';
    }
    return 0;
}